CC := gcc
CFLAGS := -O2 -Wall -g $(shell pkg-config --cflags glib-2.0)
INCLUDES := 
LIBS := $(shell pkg-config --libs glib-2.0)

BISON := bison
BISONFLAGS := -v -d

FLEX := flex
FLEXFLAGS :=

.c.o:
	$(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $<

all: jajanyu

jajanyu: jajanyu.o \
	 nyu_range.o nyu_array.o nyu_string.o nyu_object.o nyu_refcnt.o \
	 nyu_scope.o nyu_var_list.o nyu_tree.o parse.o lex.o
	$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^ $(LIBS)

jajanyu.o: nyu.h nyu_common.h nyu_string.h nyu_object.h nyu_refcnt.h
nyu_range.o: nyu_range.h nyu_string.h nyu_object.h nyu_refcnt.h
nyu_array.o: nyu_array.h nyu_string.h nyu_object.h nyu_refcnt.h
nyu_string.o: nyu_string.h nyu_object.h nyu_refcnt.h
nyu_object.o: nyu_object.h nyu_string.h nyu_refcnt.h
nyu_refcnt.o: nyu_refcnt.h
nyu_scope.o: nyu_scope.h nyu_var_list.h nyu_tree.h nyu_common.h
nyu_var_list.o: nyu_var_list.h nyu_tree.h nyu_common.h
nyu_tree.o: nyu_tree.h nyu_common.h nyu_string.h nyu_object.h nyu_range.h

parse.o: parse.c parse.h nyu_common.h
parse.h: parse.c
parse.c: parse.y
	$(BISON) $(BISONFLAGS) -o $@ $<

lex.o: lex.c parse.h nyu_common.h
lex.c: lex.l
	$(FLEX) $(FLEXFLAGS) -o$@ $<

clean:
	-rm -f *.o parse.c parse.h parse.output lex.c jajanyu
